<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        //对象的动态特性
        //1.点语法
        //字面量创建对象
        var obj = {
        }
    
        //创建完对象之后 还能再添加属性和方法，称之为 动态添加
        obj.name = 'jack';//动态添加属性
        //动态添加方法
        obj.sayHi = function() {
            console.log('say hi');            
        }
        obj.sayHi = function () {
            console.log('say hi');            
        }

        console.log(obj.name);//访问对象属性
        obj.sayHi()//调用对象方法

        obj.name = 'mr马';
        console.log(obj.name);//'mr马'
        //结论：如果对象中存在 点访问的属性 那么就可以修改属性值，如果对象中不存在 该属性 就可会添加该属性并设置值
        
        //删除属性
        delete obj.name;
        console.log(obj.name);//undefined

        //2.数据关联法([]方法) 新增修改删除属性
        var obj2 = new Object();//内置对象构造函数

        //动态添加属性
        obj2['name']='andy';
        console.log(obj2['name']);//访问属性 andy

        //动态添加方法
        obj2['sayHi'] = function() {
            console.log('obj2 say hi');            
        }
        obj2['sayHi']();//调用对象方法
        
        //修改属性
        obj2['name']='老周'
        console.log(obj2['name']);//访问属性 老周

        //删除属性
        delete obj2['name'];
        console.log(obj2['name']);//删除后再访问 属性1会得到 undefined
           
    </script>
</body>
</html>